/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Miscelaneo.TiposGenericos.Demo;

import Miscelaneo.Serializacion.EjemploPersona.MiObjectOutputStream;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;

/**
 *
 * @author AMD
 */
public class serializacion {
     public boolean HayRegistros(String FileName){
        int cont =0;
        try {
             //recuperamos un archivo del disco
             FileInputStream fis = new FileInputStream(FileName);
             //Esta clase tiene el metodo writeObject()  ...
             ObjectInputStream ois = new ObjectInputStream(fis);             
             Object aux = ois.readObject();
             Persona p;
             // Mientras haya objetos
             while (aux!=null) {
                if (aux instanceof Persona) {
                    cont++;
                     p =(Persona)aux;
                     break;
                 }   
                aux = ois.readObject();
            }
             ois.close();             
         }  
         catch (EOFException e1) {
             System.out.println ("Fin de fichero");
         }
         catch (Exception e2){
             e2.printStackTrace();
         }        
        return (cont >0)? true : false;
    }
     public  boolean SerializacionPrimaria(String FileName, Object o){
                boolean listo =true;
                //iniciar el proceso de serializacion
                 try {//colocar los obejtos en el disco
                     //creamos el archivo
                     FileOutputStream fs = new FileOutputStream(FileName);
                     //Esta clase tiene el metodo writeObject()  ...
                     ObjectOutputStream os = new ObjectOutputStream(fs );             
                     os.writeObject(o);        
                     os.close();
                 }  catch (Exception e)
                    {
                        e.printStackTrace();
                        listo = false;
                    }
                 return listo;
        }    
     public  boolean SerializacionSecundaria(String FileName, Object o){
                boolean listo =true;
                //iniciar el proceso de serializacion
                 try {//colocar los obejtos en el disco
                     //creamos el archivo
                     FileOutputStream fs = new FileOutputStream(FileName, true);
                     //Esta clase tiene el metodo writeObject()  ...
                     MiObjectOutputStream os = new MiObjectOutputStream(fs );             
                     os.writeUnshared(o);        
                     os.close();
                 }  catch (Exception e)
                    {
                        e.printStackTrace();
                        listo = false;
                    }
                 return listo;
        } 
     public ArrayList Deserializar(String FileName){
         boolean listo =true;
         ArrayList lista = new ArrayList();
         try {
             //recuperamos un archivo del disco
             FileInputStream fis = new FileInputStream(FileName);
             //Esta clase tiene el metodo writeObject()  ...
             ObjectInputStream ois = new ObjectInputStream(fis);             
             Object aux = ois.readObject();
            // Mientras haya objetos
            while (aux!=null) {
                lista.add(aux);
                aux = ois.readObject();
            }
             ois.close();             
         }catch (EOFException e1) {
            System.out.println ("Fin de fichero");
         }
        catch (Exception e2)
        {
            e2.printStackTrace();
            listo = false;
        }
            return lista;
    }
}
